package demo05;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Random;

/*
 * 题目：用一个大集合存入20个随机数字，然后筛选其中的偶数元素，放到小集合中。
 * 要求使用自定义的方法来实现筛选。
 */
public class Demo04ArrayListReturn {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 20; i++) {
            list.add(r.nextInt(100) + 1);
        }
        
        System.out.println(getSmallList1(list)); // 不改变集合的方法一
        System.out.println(list);
        System.out.println(getSmallList2(list)); // 改变集合的方法二
        System.out.println(list);
    }

    // 方法一：创建一个小集合，收集原集合中的偶数元素，最后返回小集合
    public static ArrayList<Integer> getSmallList1(ArrayList<Integer> list) {
        ArrayList<Integer> slist = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) % 2 == 0) { // 判断是否为偶数元素
                slist.add(list.get(i)); // 添加偶数元素到新集合
            }
        }

        return slist; // 返回小集合
    }

    // 方法二：不创建集合，在原集合上删除奇数元素，最后返回原集合
    // 注意：本方法改变了原集合，如果使用本方法，之后再使用原集合，内容将不再带有奇数元素
    public static ArrayList<Integer> getSmallList2(ArrayList<Integer> list) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) % 2 != 0) { // 判断是否为奇数元素
                list.remove(i--); // 删去奇数元素，并且让i往前退一格重新判断
            }
        }

        return list; // 返回原集合
    }
}
